package Initialize

import (
	"fmt"
	"gitee.com/fierce_wolf/go-fox-edge-common/commMqttRpc"
	"gitee.com/fierce_wolf/go-fox-edge-common/commRedis"
	"gitee.com/fierce_wolf/go-fox-edge-common/commUtil/periodTask"
	"go-fox-edge-iot-gateway/commEnv"
	"go-fox-edge-iot-gateway/routerServer"
)

func Initialize() {
	fmt.Println("------------- iot-gateway 初始化开始！-------------")

	// 检查：用户是否指明要使用redis进行各gateway共享
	if commEnv.Service.RedisPrefix != "" {
		// 连接redis
		commRedis.ConnectRedis()

		// 检查连接状态：连接不上就通过panic退出吧
		ok := commRedis.TestConnect()
		if !ok {
			panic("连接redis失败:" + commRedis.Options.Addr)
		}
	}

	// 装载配置文件
	commEnv.Conf.LoadConf()

	// 初始化MQTT参数
	commMqttRpc.Instance(commEnv.Service.Mqtt, commEnv.Service.EdgeId, commEnv.Service.Topic.Request, commEnv.Service.Topic.Respond)

	// 启动后台线程
	periodTask.Scheduler()

	// 启动路由
	routerServer.StartServer()

	fmt.Println("------------- iot-gateway 初始化结束！-------------")

	fmt.Println("------------- iot-gateway 驻留在后台！-------------")
	select {}
}
